這次使用新加坡(ap-southeast-1)作為主 Region,也因為是單純測試使用的,沒有特別的災難復原或高可用(HA)需求,因此除了像 S3 這種區域級的服務預設會在多個 AZ 中存儲之外,不會特別把服務在多個 AZ 中部署。
在 AWS account 中建立一個名為 data-platform-vpc 的雲端數據平台VPC ,包含 Public & Private subnet,在 VPC 上會建立 Internet gateway 提供 Public subnet 外部網路連線功能。數據服務基於安全性會建立在 Private subnet 上,透過 Public subnet 上建立的 NAT gateway 提供 Private subnet 連線至外部網路。
根據以上概念,簡單繪製網路架構圖 & 網段如下:
由於數據平台會頻繁的與 AWS Managed 的服務溝通(例如: S3, Glue…),為了安全性以及效率,使用 VPC endpoints 進行溝通會是比較適合的方案,以下為需要提前在 data-platform-vpc 掛載的 VPC endpoints:
先登入自己的 AWS Account 中,並建立一個 IAM User,命名為 data-platform-admin,掛上 AWS AdministratorAccess 的 AWS managed policy 便於建置操作,後續各個服務需要的 Execution role 以及對應的 Permissions 我們可以視實際需求再手動加入
建立完 IAM User 之後,由於這次希望透過 Terraform IaC 的方式部署,所以需要先申請一組 Access keys 給 data-platform-admin 這個 IAM user,讓他可以透過程式化指令呼叫 AWS API 協助進行作業,我們可以透過以下官方連結說明建立:
Managing access keys for IAM users - AWS Identity and Access Management
拿到 Access Key & Secrets Key (AKSK) 之後,接下來我們開始進行實際的架構建置囉~